#!/usr/bin/env python3

import logging
import os
from datetime import datetime

class AGILogger:
    # 日志级别映射
    LEVEL_MAP = {
        'debug': logging.DEBUG,
        'info': logging.INFO,
        'warning': logging.WARNING,
        'error': logging.ERROR,
        'critical': logging.CRITICAL
    }

    def __init__(self, name, level='info', log_dir='logs'):
        """初始化日志记录器

        Args:
            name (str): 日志记录器名称
            level (str): 日志级别，可选值：debug, info, warning, error, critical
            log_dir (str): 日志文件存储目录
        """
        self.logger = logging.getLogger(name)
        self.logger.setLevel(self.LEVEL_MAP.get(level.lower(), logging.INFO))

        # 创建日志目录
        if not os.path.exists(log_dir):
            os.makedirs(log_dir)

        # 生成日志文件名
        log_file = os.path.join(log_dir, f'{name}_{datetime.now().strftime("%Y%m%d")}.log')

        # 设置文件处理器
        file_handler = logging.FileHandler(log_file)
        file_handler.setFormatter(logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
        ))
        self.logger.addHandler(file_handler)

        # 设置控制台处理器
        console_handler = logging.StreamHandler()
        console_handler.setFormatter(logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
        ))
        self.logger.addHandler(console_handler)

    def debug(self, message):
        """记录调试级别的日志"""
        self.logger.debug(message)

    def info(self, message):
        """记录信息级别的日志"""
        self.logger.info(message)

    def warning(self, message):
        """记录警告级别的日志"""
        self.logger.warning(message)

    def error(self, message):
        """记录错误级别的日志"""
        self.logger.error(message)

    def critical(self, message):
        """记录严重错误级别的日志"""
        self.logger.critical(message)

# 使用示例
if __name__ == '__main__':
    # 创建日志记录器实例
    logger = AGILogger('test_module', level='debug')

    # 记录不同级别的日志
    logger.debug('这是一条调试信息')
    logger.info('这是一条普通信息')
    logger.warning('这是一条警告信息')
    logger.error('这是一条错误信息')
    logger.critical('这是一条严重错误信息')